# Service Gateway #

## Overview ##

The Service Gateway is an Application Proxy service that should be required for ALL internet facing web sites and applications. It provides **Protection**, **Monitoring** and **Lifecycle Management** which are essential qualities to all highly available web properties in a super-easy configuration and management package.

The high level qualities are realized by the following set of features:

####Protection
- Authentication and Authorization using *Azure Active Directory*
- (Coming soon) Denial of Service (DoS) and Distributed Denial of Service (DDoS) detection and protection

####Monitoring
- Web logs for all traffic through the Gateway are persisted to *Microsoft Azure Storage*
- *Microsoft Azure HDInsight* can be scheduled to process web logs and provide application insights
- Common analytics reports included
- Ability to connect Excel/BI Tools to run ad-hoc application analytics queries

####Lifecycle Management
- A/B Testing. Run new versions of components in production environment with controlled percentage of traffic directed to new versions. Ramp distribution up or down.
- Compose multiple application roles to create single, cohesive application. Increase agility by decomposing monolithic applications without making user experience fragmented.
- Distribute traffic to multiple resources based on a variety of criteria by creating 'Flights'. Enables customer or user routing.


## Getting Started ##

The following diagram depicts the high level architecture of an application using the Service Gateway:

 ![](https://configtest.blob.core.windows.net/resources/codeplex/Gateway.png)

## Management Console

A Management Console web application is used to configure, deploy and manage a Service Gateway for your application. A Management Console can be created in very few clicks by using the *Microsoft Azure Websites Gallery*. Once you have a Management Console website running, you enter the desired configuration for your Gateway in much the same way as you would configure a wi-fi router. You can then use the Console to deploy a Service Gateway to *Microsoft Azure* and enjoy the benefits of internet-ready qualities in your application.

See the [Management Console User Guide](Console) for full details. 

## Role Configuration ##

The Service Gateway can also be manually configured by writing the configuration information directly into some JSON files.

See the [Configuration Guide and Reference](Roles) for full details.

## Extending Service Gateway ##

The source code for the Service Gateway is provided here so that you may incorporate it into your own build and deployment processes. You are free to extend the capabilities of the Service Gateway to accommodate your specific requirements.

The Service Gateway may be deployed to any web hosting environment. You will need to serve the configuration, as described in the [Configuration Guide and Reference](Roles) from an internet addressable location such as *Microsoft Azure Blob Storage*.

For more details on Deployment and Management see the [Deployment Guide](Deployment).